﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data;

/// <summary>
/// Summary description for Candidatos
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class Candidatos : System.Web.Services.WebService {

    public Candidatos () {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld()     
    {
        return "Hello World";
    }
    [WebMethod(Description = "Metodo que de se utiliza para la insercion de candidatos en la base de datos")]
    public string InsertarCandidato()   
    {
        return "Hello World";
    }
    [WebMethod(Description = "Metodo que de se utiliza para la consulta de los candidatos en la base de datos")]
    public DataSet consultarCandidato()
    {
        DataSet ds = new DataSet();
        //Conexion objConexion = new Conexion();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();
        SqlDataAdapter da = new SqlDataAdapter();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "SELECTCANDIDATO";
        da.SelectCommand = cmd;

        //Construir un datatable en el dataset
        ds.Tables.Add("Candidato");
        //Agregar columnas al data table
        ds.Tables["Candidato"].Columns.Add("IdCandidato", typeof(int));
        ds.Tables["Candidato"].Columns.Add("Nombres", typeof(string));
        ds.Tables["Candidato"].Columns.Add("Apellidos", typeof(string));
        ds.Tables["Candidato"].Columns.Add("FechaNacimiento", typeof(string));
        ds.Tables["Candidato"].Columns.Add("Direccion", typeof(string));
        ds.Tables["Candidato"].Columns.Add("Telefono", typeof(string));
        ds.Tables["Candidato"].Columns.Add("EMail", typeof(string));
        ds.Tables["Candidato"].Columns.Add("Movil", typeof(string));
        ds.Tables["Candidato"].Columns.Add("Identificacion", typeof(string));
        ds.Tables["Candidato"].Columns.Add("CodigoTributario", typeof(string));
        ds.Tables["Candidato"].Columns.Add("IdCiudad", typeof(string));
        ds.Tables["Candidato"].Columns.Add("IdContratos", typeof(string));
        ds.Tables["Candidato"].Columns.Add("IdOutSourcing", typeof(int));
        //Llenar el datatable
        da.Fill(ds.Tables["Candidato"]);

        //Tabla Experiencia
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "SELECTEXPERIENCIA";
        da.SelectCommand = cmd;

        //Construir un datatable en el dataset
        ds.Tables.Add("Experiencia");
        //Agregar columnas al data table
        ds.Tables["Experiencia"].Columns.Add("IdExperiencia", typeof(int));
        ds.Tables["Experiencia"].Columns.Add("Trabajo", typeof(string));
        ds.Tables["Experiencia"].Columns.Add("FechaInicio", typeof(string));
        ds.Tables["Experiencia"].Columns.Add("FechaFinal", typeof(string));
        ds.Tables["Experiencia"].Columns.Add("Descripcion", typeof(string));
        ds.Tables["Experiencia"].Columns.Add("IdCandidato", typeof(int));

        //Llenar el datatable
        da.Fill(ds.Tables["Experiencia"]);

        //Tabla Estudios
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "SELECTEST";
        da.SelectCommand = cmd;

        //Construir un datatable en el dataset
        ds.Tables.Add("Estudios");
        //Agregar columnas al data table
        ds.Tables["Estudios"].Columns.Add("IdEstudios", typeof(int));
        ds.Tables["Estudios"].Columns.Add("NombreEstudios", typeof(string));
        ds.Tables["Estudios"].Columns.Add("Institucion", typeof(string));
        ds.Tables["Estudios"].Columns.Add("FechaInicio", typeof(string));
        ds.Tables["Estudios"].Columns.Add("FechaFinal", typeof(string));
        ds.Tables["Estudios"].Columns.Add("IdCandidato", typeof(int));

        //Llenar el datatable
        da.Fill(ds.Tables["Estudios"]);

        //Tabla OtrasHabilidades
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "SELECTOHABILIDADES";
        da.SelectCommand = cmd;

        //Construir un datatable en el dataset
        ds.Tables.Add("OHabilidades");
        //Agregar columnas al data table
        ds.Tables["OHabilidades"].Columns.Add("IdHabilidad", typeof(int));
        ds.Tables["OHabilidades"].Columns.Add("Nombre", typeof(string));
        ds.Tables["OHabilidades"].Columns.Add("Descripcion", typeof(string));
        ds.Tables["OHabilidades"].Columns.Add("IdCandidato", typeof(int));

        //Llenar el datatable
        da.Fill(ds.Tables["OHabilidades"]);

        //Tabla REFERENCIAS
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "SELECTREFERENCIAS";
        da.SelectCommand = cmd;

        //Construir un datatable en el dataset
        ds.Tables.Add("Referencias");
        //Agregar columnas al data table
        ds.Tables["Referencias"].Columns.Add("IdReferencias", typeof(int));
        ds.Tables["Referencias"].Columns.Add("Nombre", typeof(string));
        ds.Tables["Referencias"].Columns.Add("Cargo", typeof(string));
        ds.Tables["Referencias"].Columns.Add("Trabajo", typeof(string));
        ds.Tables["Referencias"].Columns.Add("Direccion", typeof(string));
        ds.Tables["Referencias"].Columns.Add("Telefono", typeof(string));
        ds.Tables["Referencias"].Columns.Add("Email", typeof(string));
        ds.Tables["Referencias"].Columns.Add("IdCandidato", typeof(int));


        //Llenar el datatable
        da.Fill(ds.Tables["Referencias"]);

        return ds;
    }

    //********************seccion de metodos
    [WebMethod(Description = "Metodo que se utiliza para Actualizar,Borrar e Insertar en la Tabla Candidatos")]
    public void DatoCandidato(DataSet ds)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand cmdUpdate = new SqlCommand();
        SqlCommand cmdInsert = new SqlCommand();
        SqlCommand cmdDelete = new SqlCommand();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();


        //Seccion para actualizacion
        cmdUpdate.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdUpdate.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");
        cmdUpdate.Parameters.Add("@Nombres", SqlDbType.VarChar, 80, "Nombres");
        cmdUpdate.Parameters.Add("@Apellidos", SqlDbType.VarChar, 80, "Apellidos");
        cmdUpdate.Parameters.Add("@FechaNacimiento", SqlDbType.VarChar, 10, "FechaNacimiento");
        cmdUpdate.Parameters.Add("@Direccion", SqlDbType.VarChar, 125, "Direccion");
        cmdUpdate.Parameters.Add("@Telefono", SqlDbType.VarChar, 15, "Telefono");
        cmdUpdate.Parameters.Add("@EMail", SqlDbType.VarChar, 30, "EMail");
        cmdUpdate.Parameters.Add("@Movil", SqlDbType.VarChar, 15, "Movil");
        cmdUpdate.Parameters.Add("@Identificacion", SqlDbType.VarChar, 15, "Identificacion");
        cmdUpdate.Parameters.Add("@CodigoTributario", SqlDbType.VarChar, 15, "CodigoTributario");
        cmdUpdate.Parameters.Add("@IdCiudad", SqlDbType.Int, 4, "IdCiudad");
        cmdUpdate.Parameters.Add("@IdContratos", SqlDbType.Int, 4, "IdContratos");
        cmdUpdate.Parameters.Add("@IdOutSourcing", SqlDbType.Int, 4, "IdOutSourcing");


        cmdUpdate.CommandType = CommandType.StoredProcedure;
        cmdUpdate.CommandText = "UPDATECANDIDATOS";

        da.UpdateCommand = cmdUpdate;

        //Seccion para agregar 
        cmdInsert.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando

        cmdInsert.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");
        cmdInsert.Parameters.Add("@Nombres", SqlDbType.VarChar, 80, "Nombres");
        cmdInsert.Parameters.Add("@Apellidos", SqlDbType.VarChar, 80, "Apellidos");
        cmdInsert.Parameters.Add("@FechaNacimiento", SqlDbType.VarChar, 10, "FechaNacimiento");
        cmdInsert.Parameters.Add("@Direccion", SqlDbType.VarChar, 125, "Direccion");
        cmdInsert.Parameters.Add("@Telefono", SqlDbType.VarChar, 15, "Telefono");
        cmdInsert.Parameters.Add("@EMail", SqlDbType.VarChar, 30, "EMail");
        cmdInsert.Parameters.Add("@Movil", SqlDbType.VarChar, 15, "Movil");
        cmdInsert.Parameters.Add("@Identificacion", SqlDbType.VarChar, 15, "Identificacion");
        cmdInsert.Parameters.Add("@CodigoTributario", SqlDbType.VarChar, 15, "CodigoTributario");
        cmdInsert.Parameters.Add("@IdCiudad", SqlDbType.Int, 4, "IdCiudad");
        cmdInsert.Parameters.Add("@IdContratos", SqlDbType.Int, 4, "IdContratos");
        cmdInsert.Parameters.Add("@IdOutSourcing", SqlDbType.Int, 4, "IdOutSourcing");

        cmdInsert.CommandType = CommandType.StoredProcedure;
        cmdInsert.CommandText = "INCANDIDATOS";

        da.InsertCommand = cmdInsert;

        //Seccion para eliminar 
        cmdDelete.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdDelete.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");
        cmdDelete.CommandType = CommandType.StoredProcedure;
        cmdDelete.CommandText = "deleteCandidatos";

        da.DeleteCommand = cmdDelete;

        if (ds.HasChanges())
        {
            da.Update(ds.Tables["Candidato"]);
        }
    }

    //*********************************************************************
    [WebMethod(Description = "Metodo que se utiliza para Actualizar,Borrar e Insertar en la Tabla Experiencia")]
    public void DatoExperiencia(DataSet ds)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand cmdUpdate = new SqlCommand();
        SqlCommand cmdInsert = new SqlCommand();
        SqlCommand cmdDelete = new SqlCommand();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();

        //Seccion para actualizacion
        cmdUpdate.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdUpdate.Parameters.Add("@IdExperiencia", SqlDbType.Int, 4, "IdExperiencia");
        cmdUpdate.Parameters.Add("@Trabajo", SqlDbType.VarChar, 30, "Trabajo");
        cmdUpdate.Parameters.Add("@FechaInicio", SqlDbType.VarChar, 10, "FechaInicio");
        cmdUpdate.Parameters.Add("@FechaFinal", SqlDbType.VarChar, 10, "FechaFinal");
        cmdUpdate.Parameters.Add("@Descripcion", SqlDbType.VarChar, 30, "Descripcion");
        cmdUpdate.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");


        cmdUpdate.CommandType = CommandType.StoredProcedure;
        cmdUpdate.CommandText = "UPDATEEXPERIENCIA";

        da.UpdateCommand = cmdUpdate;

        //Seccion para agregar 
        cmdInsert.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando

        cmdInsert.Parameters.Add("@IdExperiencia", SqlDbType.Int, 4, "IdExperiencia");
        cmdInsert.Parameters.Add("@Trabajo", SqlDbType.VarChar, 30, "Trabajo");
        cmdInsert.Parameters.Add("@FechaInicio", SqlDbType.VarChar, 10, "FechaInicio");
        cmdInsert.Parameters.Add("@FechaFinal", SqlDbType.VarChar, 10, "FechaFinal");
        cmdInsert.Parameters.Add("@Descripcion", SqlDbType.VarChar, 30, "Descripcion");
        cmdInsert.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");

        cmdInsert.CommandType = CommandType.StoredProcedure;
        cmdInsert.CommandText = "insertExperiencia";

        da.InsertCommand = cmdInsert;

        //Seccion para eliminar 
        cmdDelete.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdDelete.Parameters.Add("@IdExperiencia", SqlDbType.Int, 4, "IdExperiencia");
        cmdDelete.CommandType = CommandType.StoredProcedure;
        cmdDelete.CommandText = "deleteExperiencia";

        da.DeleteCommand = cmdDelete;

        if (ds.HasChanges())
        {
            da.Update(ds.Tables["Experiencia"]);
        }
    }

    //*********************************************************************
    [WebMethod(Description = "Metodo que se utiliza para Actualizar,Borrar e Insertar en la Tabla Estudios")]
    public void DatoEstudios(DataSet ds)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand cmdUpdate = new SqlCommand();
        SqlCommand cmdInsert = new SqlCommand();
        SqlCommand cmdDelete = new SqlCommand();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();

        //Seccion para actualizacion
        cmdUpdate.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdUpdate.Parameters.Add("@IdEstudios", SqlDbType.Int, 4, "IdEstudios");
        cmdUpdate.Parameters.Add("@NombreEstudios", SqlDbType.VarChar, 30, "NombreEstudios");
        cmdUpdate.Parameters.Add("@Institucion", SqlDbType.VarChar, 60, "Institucion");
        cmdUpdate.Parameters.Add("@FechaInicio", SqlDbType.VarChar, 10, "FechaInicio");
        cmdUpdate.Parameters.Add("@FechaFinal", SqlDbType.VarChar, 10, "FechaFinal");
        cmdUpdate.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");


        cmdUpdate.CommandType = CommandType.StoredProcedure;
        cmdUpdate.CommandText = "UPDATEEST";

        da.UpdateCommand = cmdUpdate;

        //Seccion para agregar 
        cmdInsert.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando

        cmdInsert.Parameters.Add("@IdEstudios", SqlDbType.Int, 4, "IdEstudios");
        cmdInsert.Parameters.Add("@NombreEstudios", SqlDbType.VarChar, 30, "NombreEstudios");
        cmdInsert.Parameters.Add("@Institucion", SqlDbType.VarChar, 60, "Institucion");
        cmdInsert.Parameters.Add("@FechaInicio", SqlDbType.VarChar, 10, "FechaInicio");
        cmdInsert.Parameters.Add("@FechaFinal", SqlDbType.VarChar, 10, "FechaFinal");
        cmdInsert.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");

        cmdInsert.CommandType = CommandType.StoredProcedure;
        cmdInsert.CommandText = "insertEstudios";

        da.InsertCommand = cmdInsert;

        //Seccion para eliminar 
        cmdDelete.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdDelete.Parameters.Add("@IdEstudios", SqlDbType.Int, 4, "IdEstudios");
        cmdDelete.CommandType = CommandType.StoredProcedure;
        cmdDelete.CommandText = "deleteEST";

        da.DeleteCommand = cmdDelete;

        if (ds.HasChanges())
        {
            da.Update(ds.Tables["Estudios"]);
        }
    }

    //*********************************************************************
    [WebMethod(Description = "Metodo que se utiliza para Actualizar,Borrar e Insertar en la Tabla OtrasHabilidades")]
    public void DatoOHabilidades(DataSet ds)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand cmdUpdate = new SqlCommand();
        SqlCommand cmdInsert = new SqlCommand();
        SqlCommand cmdDelete = new SqlCommand();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();

        //Seccion para actualizacion
        cmdUpdate.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdUpdate.Parameters.Add("@IdHabilidad", SqlDbType.Int, 4, "IdHabilidad");
        cmdUpdate.Parameters.Add("@Nombre", SqlDbType.VarChar, 30, "Nombre");
        cmdUpdate.Parameters.Add("@Descripcion", SqlDbType.VarChar, 80, "Descripcion");
        cmdUpdate.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");


        cmdUpdate.CommandType = CommandType.StoredProcedure;
        cmdUpdate.CommandText = "UPDATEOHABILIDADES";

        da.UpdateCommand = cmdUpdate;

        //Seccion para agregar 
        cmdInsert.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando

        cmdInsert.Parameters.Add("@IdHabilidad", SqlDbType.Int, 4, "IdHabilidad");
        cmdInsert.Parameters.Add("@Nombre", SqlDbType.VarChar, 30, "Nombre");
        cmdInsert.Parameters.Add("@Descripcion", SqlDbType.VarChar, 80, "Descripcion");
        cmdInsert.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");

        cmdInsert.CommandType = CommandType.StoredProcedure;
        cmdInsert.CommandText = "insertOtrasHabilidades";

        da.InsertCommand = cmdInsert;

        //Seccion para eliminar 
        cmdDelete.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdDelete.Parameters.Add("@IdHabilidad", SqlDbType.Int, 4, "IdHabilidad");
        cmdDelete.CommandType = CommandType.StoredProcedure;
        cmdDelete.CommandText = "deleteOHABILIDADES";

        da.DeleteCommand = cmdDelete;

        if (ds.HasChanges())
        {
            da.Update(ds.Tables["OHabilidades"]);
        }
    }

    //*********************************************************************
    [WebMethod(Description = "Metodo que se utiliza para Actualizar,Borrar e Insertar en la Tabla Referencias")]
    public void DatoReferencias(DataSet ds)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand cmdUpdate = new SqlCommand();
        SqlCommand cmdInsert = new SqlCommand();
        SqlCommand cmdDelete = new SqlCommand();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();

        //Seccion para actualizacion
        cmdUpdate.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdUpdate.Parameters.Add("@IdReferencias", SqlDbType.Int, 4, "IdReferencias");
        cmdUpdate.Parameters.Add("@Nombre", SqlDbType.VarChar, 30, "Nombre");
        cmdUpdate.Parameters.Add("@Cargo", SqlDbType.VarChar, 80, "Cargo");
        cmdUpdate.Parameters.Add("@Trabajo", SqlDbType.VarChar, 30, "Trabajo");
        cmdUpdate.Parameters.Add("@Direccion", SqlDbType.VarChar, 60, "Direccion");
        cmdUpdate.Parameters.Add("@Telefono", SqlDbType.VarChar, 60, "Telefono");
        cmdUpdate.Parameters.Add("@Email", SqlDbType.VarChar, 30, "Email");
        cmdUpdate.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");


        cmdUpdate.CommandType = CommandType.StoredProcedure;
        cmdUpdate.CommandText = "UPDATEREFERENCIA";

        da.UpdateCommand = cmdUpdate;

        //Seccion para agregar 
        cmdInsert.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando

        cmdInsert.Parameters.Add("@IdReferencias", SqlDbType.Int, 4, "IdReferencias");
        cmdInsert.Parameters.Add("@Nombre", SqlDbType.VarChar, 30, "Nombre");
        cmdInsert.Parameters.Add("@Cargo", SqlDbType.VarChar, 80, "Cargo");
        cmdInsert.Parameters.Add("@Trabajo", SqlDbType.VarChar, 30, "Trabajo");
        cmdInsert.Parameters.Add("@Direccion", SqlDbType.VarChar, 60, "Direccion");
        cmdInsert.Parameters.Add("@Telefono", SqlDbType.VarChar, 60, "Telefono");
        cmdInsert.Parameters.Add("@Email", SqlDbType.VarChar, 30, "Email");
        cmdInsert.Parameters.Add("@IdCandidato", SqlDbType.Int, 4, "IdCandidato");

        cmdInsert.CommandType = CommandType.StoredProcedure;
        cmdInsert.CommandText = "Insertreferencia";

        da.InsertCommand = cmdInsert;

        //Seccion para eliminar 
        cmdDelete.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdDelete.Parameters.Add("@IdReferencias", SqlDbType.Int, 4, "IdReferencias");
        cmdDelete.CommandType = CommandType.StoredProcedure;
        cmdDelete.CommandText = "deleteREFERENCIAS";

        da.DeleteCommand = cmdDelete;

        if (ds.HasChanges())
        {
            da.Update(ds.Tables["Referencias"]);
        }
    }
    

    
}
